﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Guia3.Models;

using Raven.Client.Document;
using Raven.Client;
using Raven.Client.Embedded;
using Raven.Client.Linq;
//using Raven.Client.Shard;
//using Raven.Storage.Esent;

namespace Guia3.Controllers
{
    public class VagaController : Controller
    {

        //
        //get
        public ActionResult VagaList()
        {
            using (var session = MvcApplication.DocDB.OpenSession())
            {
                var Vagas = from Vag in session.Query<Vaga>()
                                 select Vag;
                return View(Vagas);
            }

        }

        //
        // GET: /Vaga/
        public ActionResult New() //abertura inicial do formulario.
        {
            Vaga Vag = new Vaga { Id = "", Empresa = "", Cidade = "", Cargo = "", Descricao = "", };
            return View("Edit", Vag);
        }

        //
        public ActionResult ToEdit(string Id) //localiza e mostra registro para edição
        {
            using (IDocumentSession session = MvcApplication.DocDB.OpenSession())
            {
                Vaga Vag = session.Load<Vaga>(Id);
                return View("Edit", Vag);
            }
        }


        [HttpPost] // ****  Este bloco recebe os dados do formulário e Grava....
        public ActionResult Save(FormCollection campos)
        {

            using (IDocumentSession session = MvcApplication.DocDB.OpenSession())
            {
                Vaga Vag = session.Load<Vaga>(campos["Id"]);
                if (Vag == null)
                {
                    Vag = new Vaga { Id = campos["Id"], Empresa = campos["Empresa"], Cargo = campos["Cargo"], Cidade = campos["Cidade"],
                                      Descricao = campos["Descricao"]};
                    session.Store(Vag);
                }
                else
                {
                    Vag.Empresa = campos["Empresa"];
                    Vag.Cidade = campos["Cidade"];
                    Vag.Cargo = campos["Cargo"];
                    Vag.Descricao = campos["Descricao"];
                }
                session.SaveChanges();
            }

            return RedirectToAction("VagaList", "Vaga");
        }

        public ActionResult Delete(string Id)
        {
            using (var session = MvcApplication.DocDB.OpenSession())
            {
                Vaga Vag = session.Load<Vaga>(Id);
                session.Delete(Vag);

                session.SaveChanges();
            }
            return RedirectToAction("VagaList", "Vaga");
        }

    }
}

